package com.nowcoder.community.entity;


import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.util.Date;

/**
 * @ClassName DiscussPost
 * @Description
 * @Author hhwu
 * @Date 2022/5/16 16:34
 * Version 1.0
 **/
// es的总体思路是将sql数据库中的数据格式和es建立联系，通过es来导入sql中的数据

//es中的索引对应sql中的表，es中的类型逐渐被废弃了，es中的文档对于sql中的一条数据，es中的字段对应sql中的字段。
//es中的分片指将索引分为多少部分，以方便并发查询，es中的备份就表示备份。

//注解解释：注解加载实体类上。documen可以将sql数据库中的数据关联到elasticsearch数据库中
//对于本实体类对应的sql中名为discusspost的表，对应于es中indexName的索引；es中类型设置为_doc即可，因为这个属性将被废弃；es中shards
//为对索引的分片，以方便并发操作；es中replicas表示将索引备份多少份。
@Document(indexName = "discusspost", type = "_doc", shards = 6, replicas = 3)
public class DiscussPost {
    @Id// 在es中意味主键
    private int id;

    @Field(type = FieldType.Integer)// 意味普通类型的字段，类型为integer
    private  int userId;

    // 互联网校招
//    设置为文本类型的字段，以方便搜索，存储时的分词设置为分最多的词，搜索时的分词为智能分词。
    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private  String title;

    @Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_smart")
    private  String content;

    @Field(type = FieldType.Integer)// 意味普通类型的字段，类型为integer
    private  int type;

    @Field(type = FieldType.Integer)// 意味普通类型的字段，类型为integer
    private int status;

    @Field(type = FieldType.Date)// 意味普通类型的字段，类型为date
    private Date createTime;

//    @Field(type = FieldType.Integer)// 意味普通类型的字段，类型为integer
//    private  int comment;

    @Field(type = FieldType.Integer)// 意味普通类型的字段，类型为integer
    private int commentCount;

    @Field(type = FieldType.Double)// 意味普通类型的字段，类型为double
    private  double score;


    public int getCommentCount() {
        return commentCount;
    }

    public void setCommentCount(int commentCount) {
        this.commentCount = commentCount;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

//    public int getComment() {
//        return comment;
//    }
//
//    public void setComment(int comment) {
//        this.comment = comment;
//    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "DiscussPost{" +
                "id=" + id +
                ", userId=" + userId +
                ", title='" + title + '\'' +
                ", content='" + content + '\'' +
                ", tyoe=" + type +
                ", status=" + status +
                ", createTime=" + createTime +
                ", commentCount=" + commentCount +
                ", score=" + score +
                '}';
    }
}
